সি ইউনিয়ন (C union)

Computer Programming - সি প্রোগ্রামিং (C Programming) সি ফাইল এবং স্ট্রাকচার (C File & Structure) |
319
319

এই অধ্যায়ে আপনি সি প্রোগ্রামিং এ ইউনিয়ন সম্মন্ধে জানবেন। আরোও নির্দিষ্ট করে বললেঃ ইউনিয়ন তৈরি করা, এক্সেস করা এবং ইউনিয়ন(Union)স্ট্রাকচার(structure) এর মধ্যে পার্থক্য তৈরি করতে শিখবেন।


সি প্রোগ্রামিং ইউনিয়ন

সি প্রোগ্রামিং এ ইউনিয়ন সম্পূর্নরূপে স্ট্রাকচার এর মতই। স্ট্রাকচারের ন্যায় ইউনিয়নও ডিরাইভ(derived) ডেটা টাইপ।

সি প্রোগ্রামিং এ ইউনিয়ন(Union) ডিফাইন করা খুবই সহজ এবং হুবহু স্ট্রাকচারের মতই। struct কীওয়ার্ডের পরিবর্তে শুধুমাত্র union কীওয়ার্ড ব্যবহার করতে হয়।

union car
{
  char name[50];
  int price;
};

 


ইউনিয়ন ভ্যারিয়েবল কিভাবে তৈরি করতে হয়?

স্ট্রাকচার ভ্যারিয়েবল যে পদ্ধতিতে তৈরি করা হয় ঠিক একই পদ্ধতিতে ইউনিয়ন ভ্যারিয়েবলও তৈরি করা হয়।

union car
{
  char name[50];
  int price;
} car1, car2, *car3;

 


 

অথবা

union car
{
  char name[50];
  int price;
};

int main()
{
  union car car1, car2, *car3;
  return 0;
}

 

উভয় ক্ষেত্রেই union car ডেটা টাইপের car1 ও car2 ইউনিয়ন ভ্যারিয়েবল এবং car3 ইউনিয়ন পয়েন্টার ভ্যারিয়েবল তৈরি হয়েছে।

ইউনিয়নের মেম্বারকে এক্সেস করা


স্ট্রাকচারের মেম্বারকে যে পদ্ধতিতে এক্সেস করা হয় ঠিক একই পদ্ধতিতে ইউনিয়ন এর মেম্বারকেও এক্সেস করা হয়।

উপরের উদাহরণে আপনি যদি ইউনিয়ন ভ্যারিয়েবল car এর মেম্বার price কে এক্সেস করতে চান তাহলে নিচের পদ্ধতি অনুসরণ করুনঃ

car1.price

একইভাবে আপনি যদি ইউনিয়ন পয়েন্টার ভ্যারিয়েবল- car3 এর মেম্বার price কে এক্সেস করতে চান তাহলে নিচের পদ্ধতি অনুসরণ করুনঃ

(*car3).price
অথবা;
*car3->price

ইউনিয়ন এবং স্ট্রাকচারের মধ্যে পার্থক্য

ইউনিয়ন এবং স্ট্রাকচার অনেক ক্ষেত্রে একই রকম হওয়া সত্ত্বেও এদের মধ্যে পার্থক্য বুঝা খুবই গুরুত্বপূর্ণ।

নিচের উদাহরণের সাহায্যে চলুন ইউনিয়ন এবং স্ট্রাকচারের প্রাথমিক পার্থক্য বুঝার চেষ্টা করিঃ

kt_satt_skill_example_id=565

 

ইউনিয়নের তুলনায় স্ট্রাকচারের জন্য বেশী মেমোরি বরাদ্দ রাখতে হয়

উপরের উদাহরণে ইউনিয়ন এবং স্ট্রাকচারের মধ্যে মেমোরি বরাদ্দ বিষয়ক পার্থক্য দেখানো হয়েছে।

স্ট্রাকচার ভ্যারিয়েবলের ক্ষেত্রে সকল মেম্বারের যোগফলের সমান মেমোরি বরাদ্দ রাখতে হয়।

অপরপক্ষে ইউনিয়ন ভ্যারিয়েবলের ক্ষেত্রে ইউনিয়নের সর্বোচ্চ এলিমেন্টের সমান মেমোরির প্রয়োজন হয়। ।


 

একই সঙ্গে শুধুমাত্র একটি ইউনিয়ন মেম্বারকে এক্সেস করা যায়

স্টারকচারঃ একই সঙ্গে ইহার সকল মেম্বারকে এক্সেস করা যায়।

ইউনিয়নঃ একই সঙ্গে ইহার একটিমাত্র মেম্বারকে এক্সেস করা যায় এবং অন্যান্য সকল মেম্বার গার্বেজ(garbage) ভ্যালু ধারণ করে।

 

ex-2

বিঃদ্রঃ নামের জন্য আপনি বিভিন্ন গার্বেজ ভ্যালু পেতে পারেন।

উপরের প্রোগ্রামে job1.name এর মধ্যে প্রথমে  Tamim স্টোর করা হয় এবং job1 এর অন্যান্য সকল মেম্বার যেমন salary, workerNo গার্বেজ ভ্যালু ধারণ করবে।

কিন্তু ইউজার যখন salary এর ভ্যালু প্রবেশ করায় তখন job1.salary এর মধ্যে 1234.23 স্টোর হয় এবং অন্যান্য মেম্বার যেমন-name, workerNo গার্বেজ ভ্যালু ধারণ করবে।

এইভাবে আউটপুটে salary সঠিকভাবে প্রিন্ট হবে কিন্তু name কিছু র‍্যান্ডম(random) স্ট্রিং ডিসপ্লে করে।


ফাংশনের মধ্য দিয়ে ইউনিয়নকে অতিক্রম করানো

সি প্রোগ্রামিং এ স্ট্রাকচারকে যে পদ্ধতিতে ফাংশনের মধ্য দিয়ে অতিক্রম করানো হয়, একই পদ্ধতিতে ইউনিয়নকেও অতিক্রম করানো হয়।

আরোও জানতে ভিজিট করুনঃ সি প্রোগ্রামিং এ স্ট্রাকচারকে কিভাবে অতিক্রম করানো হয়?

common.content_added_and_updated_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion